/**
 * Notes: 消息实体
 * Ver : CCMiniCloud Framework 2.0.1 ALL RIGHTS RESERVED BY cclinux0730 (wechat)
 * Date: 2020-10-28 19:20:00 
 */

const BaseProjectModel = require('./base_project_model.js');

class MsgModel extends BaseProjectModel {

	constructor() {
		super();
		this.setModel('oa_msg');
	}

	/**
	 * 获取消息详情
	 * @param {*} where 条件
	 * @param {*} fields 字段
	 * @returns 消息详情
	 */
	async getMsg(where, fields = '*') {
		return await this.getOne(where, fields);
	}

	/**
	 * 计算符合条件的记录数量
	 * @param {*} where 查询条件
	 * @returns 记录数量
	 */
	async count(where) {
		return (await this.getCollection().where(where).count()).total;
	}

	/**
	 * 创建索引
	 * @param {*} indexObj 索引对象
	 */
	async createIndex(indexObj) {
		try {
			return await this.getCollection().createIndex(indexObj);
		} catch (error) {
			console.error('创建索引失败:', error);
			return null;
		}
	}

	/**
	 * 消息列表
	 * @param {*} where 条件
	 * @param {*} fields 字段
	 * @param {*} orderBy 排序
	 * @param {*} page 页码
	 * @param {*} size 分页大小
	 * @param {*} isTotal 是否计算总数
	 * @param {*} oldTotal 旧总数
	 * @returns 消息列表
	 */
	async getMsgList(where, fields, orderBy, page, size, isTotal, oldTotal) {
		return await this.getList(where, fields, orderBy, page, size, isTotal, oldTotal);
	}
}

/**
 * 静态方法 - 获取单条记录
 * @param {*} where 查询条件
 * @param {*} fields 字段
 * @param {*} orderBy 排序
 * @returns 单条记录
 */
MsgModel.getOne = async function(where, fields = '*', orderBy = {}) {
    try {
        const instance = new MsgModel();
        return await instance.getOne(where, fields, orderBy);
    } catch (err) {
        console.error('获取消息记录失败', err);
        return null;
    }
};

/**
 * 静态方法 - 创建索引
 * @param {*} indexObj 索引对象
 */
MsgModel.createIndex = async function(indexObj) {
    try {
        const instance = new MsgModel();
        return await instance.createIndex(indexObj);
    } catch (err) {
        console.error('创建索引失败', err);
        return null;
    }
};

// 集合名
MsgModel.CL = BaseProjectModel.C('oa_msg');

MsgModel.DB_STRUCTURE = {
	_pid: 'string|true',
	MSG_ID: 'string|true',

	MSG_TITLE: 'string|false|comment=标题',
	MSG_CONTENT: 'string|false|comment=内容',
	MSG_TYPE: 'int|true|default=0|comment=消息类型 0=系统消息,1=用户通知',
	MSG_STATUS: 'int|true|default=0|comment=状态 0=未读,1=已读', 

	MSG_ADD_TIME: 'int|true',
	MSG_EDIT_TIME: 'int|true',
	MSG_ADD_IP: 'string|false',
	MSG_EDIT_IP: 'string|false',
};

// 字段前缀
MsgModel.FIELD_PREFIX = "MSG_";

// 导出一个实例
module.exports = new MsgModel(); 